package scream.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import scream.excepcion.DAOExcepcion;
import scream.util.ConexionBD;
import scream.modelo.Poder;
import scream.modelo.Cliente;



public class PoderDAO extends BaseDAO{
	
	
	public Collection<Poder> listar() throws DAOExcepcion {
		System.out.println("PoderDAO: listar()");
		Collection<Poder> c = new ArrayList<Poder>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			String query = "SELECT coPoder,noPoder from Poder";
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Poder vo = new Poder();
				vo.setCoPoder(rs.getString("noPoder"));
				vo.setNoPoder(rs.getString("noPoder"));
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}

	public void insertar(Poder vo) throws DAOExcepcion {
		System.out.println("PoderDAO: insertar(Poder vo)");
		String query = "INSERT INTO Poder(coPoder, noPoder) VALUES (?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getCoPoder());
			stmt.setString(2, vo.getNoPoder());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	public Collection<Cliente> buscarxRUCPoder(String ruc) throws DAOExcepcion {
		System.out.println("PoderDAO: buscarPorRUCPoder(String ruc)");
		//String query = "SELECT nuRUC, coRepresentante FROM Cliente, Representante WHERE nuRUC like ?";
		String query = "SELECT * FROM Cliente WHERE nuRUC,coCliente like ?,?";
		//String query = "SELECT nuCantidadEmpleados, noNombres FROM CLIENTE,REPRESENTANTE WHERE nuRUC=? and coRepresentante=?";
		Collection<Cliente> lista = new ArrayList<Cliente>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, "%" + ruc + "%");
			
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cliente vo = new Cliente();
				//Debajo se indica lo que se va a obtener para mostrar
				vo.setNuRuc(rs.getString("nuRUC"));
				vo.setNuCantidadEmpleados(rs.getString("nuCantidadEmpleados"));
				lista.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lista;
	}
	/*public Cliente obtener(String ruc,String ccliente) throws DAOExcepcion {
		System.out.println("PoderDAO: obtener(String ruc,String ccliente)");
		Cliente vo = new Cliente();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			String query = "select * from Cliente where nuRUC=? AND coCliente =?";
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, ruc);
			stmt.setString(2, ccliente);
			rs = stmt.executeQuery();
			if (rs.next()) {
				vo.setNuRuc(rs.getString(1));
				vo.setCoCliente(rs.getString(2));
				vo.setNuCantidadEmpleados(rs.getString(3));
				
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return vo;
	}*/
}
